#include <stdio.h>
#include <stdbool.h>
#include "day1.h"
#include <stdarg.h>
//region day1
// \ 换行连接符
// 字符串常量化运算符（#）
//#define massage_for(a,b) \
//    printf(#a " and " #b);
//
//int main( )
//{
//    massage_for("a","b");
//    return 0;
//}
//endregion

//region day1-1
//#define tokenpaster(n) \
//    printf("token" #n "是 %d ", token##n);
//
//int main(void) {
//    int token34 = 40;
//    tokenpaster(34);
//}
//endregion

//region day1-2
//#define  message "我的"
//#if !defined(message)
//    #define  message "你好"
//#endif
//
//int main(void) {
//    printf("message %s", message);
//    return 0;
//}

//endregionerrno.h

////region day1-3 类型转换
//int main(void ){
//    int a=100,b=20;
//    double c;
//    c=(double)a/b;
//    printf("%f",c);
//    return 0;
//}
//endregion

//region day1-4 异常
//extern int errno ; //同时会设置一个错误代码 errno，该错误代码是全局变量，表示在函数调用期间发生了错误.
//
//int main ()
//{
//    FILE * pf;
//    int errnum;
//    pf = fopen ("unexist.txt", "rb");
//    if (pf == NULL)
//    {
//        errnum = errno;
//        fprintf(stderr, "错误号: %d\n", errno);
//        perror("通过 perror 输出错误");   //perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)
//        fprintf(stderr, "打开文件错误: %s\n", strerror( errnum )); //strerror 返回错误号对应的文本。
//    }
//    else
//    {
//        fclose (pf);
//    }
//    return 0;
//}
//endregion

////region day1-5 异常退出
//main(){
//    int a=50;
//    int b=0;
//    int c;
//    c=a/b;
//    if(b==0) {
//        fprintf(stderr, "错误： 0");
//        exit(EXIT_FAILURE);
//    }
//    perror("xx");
//}
//endregion

//region day1-6 可变参数
//#include <stdio.h>
//#include <stdarg.h>
//
//double average(int num,...)
//{
//
//    va_list valist;
//    double sum = 0.0;
//    int i;
//
//    /* 为 num 个参数初始化 valist */
//    va_start(valist, num);
//
//    /* 访问所有赋给 valist 的参数 */
//    for (i = 0; i < num; i++)
//    {
//        sum += va_arg(valist, int);
//    }
//    /* 清理为 valist 保留的内存 */
//    va_end(valist);
//
//    return sum/num;
//}
//
//int main()
//{
//    printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
//    printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
//    return 0;
//}

//endregion

//region 练习 100
//有五个学生，每个学生有3门课的成绩，从键盘输入以上数据（包括学生号，姓名，三门课成绩），计算出平均成绩，
// 况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
//typedef struct {
//    int id;
//    int match;
//    int english;
//    int c;
//    int avar;
//    char name[20];
//} Stu;
//int main(){
//    Stu stu[2];
//    int avar=0;
//    printf("请输入，id，姓名，成绩：\n");
//    for (int j = 0; j < 2; ++j) {
//        scanf("%d %s %d %d %d",&stu[j].id,&stu[j].name,&stu[j].match,&stu[j].english,&stu[j].c);
//    }
//    for(int j=0;j<2;++j){
//        stu[j].avar=(stu[j].c+stu[j].english+stu[j].match)/3;
//    }
//    FILE *file;
//    if( (file=fopen("aabbccdd","w"))==NULL){
//        perror("错误");
//        exit(EXIT_FAILURE);
//    }
//    for (int i = 0; i < 2; ++i) {
//        fprintf(file,"%s %d",stu[i].name,stu[i].avar);
//    }
//
//    return 0;
//}

//endregion

//region 练习字符串复制
//int main(){
//    char a[40];
//    char b[100];\
//    memset(b,'\0',100); // \0 是字符串的结尾符。
//    printf("结果 %s",b);
//    stpcpy(a,"wo de ni ");
//    stpcpy(b,a);
//    printf("结果 %s",b);
//    return 0;
//}
//endregion


//region 指针访问数组
//int main(){
//    int a[2];
//    for (int i = 0; i < 2; ++i) {
//        scanf("%d",&a[i]);
//    }
//    printf("你的输入");
//    for (int j = 0; j < 2; ++j) {
//        printf("%d \n",*(a+j));
//    }
//}
//endregion

//region
//endregion

